home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-21
/
qemm7ref.zip
/
STEALTH.TEC
< prev
next >
Wrap
Text File
|
1993-06-08
|
17KB
|
376 lines
Troubleshooting Stealth ROM
This QEMM 7 technote is an abridged version of a technical
bulletin that is available through our standard support channels.
The information contained in this version pertains ONLY to QEMM
version 7.0. If you need information relating to earlier versions
of QEMM you can obtain the unabridged version from the following
sources:
Quarterdeck Technical Support BBS: STEALTH.TEC
CompuServe: STEALT.ZIP
Q/FAX: #205
Subject: Stealth ROM may seem mysterious, but it really is not.
This technote tells you how to diagnose and solve problems
related to the use of the Stealth ROM feature of QEMM.
This document tells you how to diagnose and solve problems
related to the use of the Stealth ROM feature. Please review the
information in PRODUCTS.TEC before beginning the steps outlined
in this technote. This technote contains information on various
hardware and software products that require specific excludes or
other parameters when used with Stealth ROM, and you may find the
information you need here.
If you are reading this technote because QEMM displayed the
message "CANNOT FIND ROM HANDLER FOR INTERRUPT XX" you should
instead refer to technote XSTI.TEC which was installed in your
QEMM\TECHNOTE directory at the time you installed QEMM.
A SIDE NOTE:
QEMM's Stealth ROM feature only relocates those ROMs which are
accessed through the use of interrupts. A ROM that is not
Stealthed may still have regions that are never used during the
system's normal operation. Some disk ROMs, video ROMs, and
devices that only use their ROMs during bootup (before the
CONFIG.SYS is loaded) fit into this category. You may be able to
get more High RAM by INCLUDING these unused regions on the
QEMM386.SYS device driver line in CONFIG.SYS. To find out what
addresses you can include, run an Analysis procedure (explained
in Chapter 9 of the QEMM manual). Then use the INCLUDE parameter
to include the addresses (see Chapter 7 of the QEMM manual).
SECTION ONE
STEP ONE:
The first step is to ascertain whether Stealth ROM is involved
with the problem. Remove the Stealth ROM parameter (ST:M or
ST:F) from the QEMM device line in your CONFIG.SYS file. Reboot
your computer and try to duplicate the problem. If the problem
still happens, then Stealth ROM is not causing the problem, and
you should refer to the troubleshooting section of your QEMM
manual for further information.
STEP TWO:
If Stealth ROM is involved in the problem, add Stealth ROM
parameters ST:M and XST=F000 to the QEMM device line in the
CONFIG.SYS file. Your QEMM line would look something like this:
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M XST=F000
Reboot the computer. If this step solves the problem, go on to
STEP THREE; if it does not, go on to SECTION TWO.
STEP THREE:
If XST=F000 solves your problem replace this parameter with
X=F000-FFFF, reboot your computer, and try again to create the
problem. The QEMM line in your CONFIG.SYS file would look
something like this:
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=F000-FFFF
If you cannot recreate the problem with the above line, add the
parameter FSTC to the end of the line as follows:
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=F000-FFFF FSTC
and reboot. If this step solves the problem, continue on. If it
does not (and FSTC may not work in all circumstances) then remove
the FSTC parameter and reboot with the previous QEMM line. In
either case, run Manifest (by typing MFT from the DOS prompt) and
look at the QEMM/Analysis screen. The last line should look
something like this:
Fn00 IIII IIII IIII IIOO
The portions of the address space with the O in them are being
accessed directly. Some program or piece of hardware is trying
to read the contents of the ROM here directly, rather than
accessing them through interrupts. This portion of the address
space must be allowed to be accessed directly. This is done by
using an EXCLUDE statement to prevent QEMM from mapping memory
into this area. In our example the target region is FE00-FFFF.
The appropriate EXCLUDE is X=FE00-FFFF and the QEMM line would
look like this:
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=FE00-FFFF
This EXCLUDE allows Stealth ROM to do its job and costs you only
8K of High RAM.
STEP FOUR:
If XST=F000 solves your problem while X=F000-FFFF does not, try
using ST:F instead of ST:M. You may end up with more High RAM
with ST:F than with ST:M and XST=F000.
SECTION TWO
PLEASE NOTE: This section is ONLY for users with video ROM.
Hercules-compatible monochrome and CGA systems do not have video
ROM; therefore, this section does not apply to users with such
systems.
On most systems, the Video ROM is located at C000-C7FF and uses
32K of upper memory address space. Some machines have a video
ROM elsewhere, usually E000-E7FF. If this is true of your
system, you should use E000 (or wherever your video ROM begins)
instead of C000. IBM PS/2 Micro Channel machines and other Micro
Channel machines have their video ROM at E000-EFFF; when using
the XST parameter on such a machine, you would use XST=E000 when
performing the steps outlined in this section. See the
instructions in STEP NINE for the proper use of the XST=E000
parameter on a Micro Channel machine.
STEP FIVE:
If XST=F000 does not solve your problem, try XST=C000. The QEMM
line of the config.sys would look like this:
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M XST=C000
If XST=C000 does not work, go on to STEP THREE. If XST=C000 does
work, go on to STEP SIX.
STEP SIX:
If XST=C000 solves the problem, try placing the Page Frame at
C000. Do this only if the entire C000 range is available--that
is, no device is using address space between C000 and CFFF for
Adapter ROM or RAM. The QEMM line of the CONFIG.SYS would look
like this:
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M FR=C000
If this works, this may be an acceptable solution. All the
address space in which High RAM can be created is being used in
this configuration. If this step does not work (or if you cannot
put the Page Frame at C000) go on to STEP SEVEN:
If XST=C000 solves the problem but you do not want to put the
Page Frame at C000 (or cannot for some reason) then try the
parameter F10:N (or FASTINT10:N) which tells QEMM to allow the
video ROM's own code to be used. By default QEMM replaces some
of the video ROM's code with its own video code. This parameter
tells QEMM not to perform this function. The QEMM line of the
CONFIG.SYS would look like this:
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M F10:N
If this step works, all ROMs are being Stealthed. (You may
choose to try STEP EIGHT as an alternative.) If this step does
not work, go on to STEP EIGHT.
STEP EIGHT:
If XST=C000 solves the problem but FR=C000 or FASTINT10:N does
not (or you either cannot put the Page Frame at C000 or do not
want to use FASTINT10:N) then replace XST=C000 with X=C000-C7FF.
The QEMM line of the config.sys would look like this:
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=C000-C7FF
If this works, add the parameter FSTC to the QEMM line:
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=C000-C7FF FSTC
Reboot your computer. If this step works, continue on; if this
step does not work (and FSTC may not work in all circumstances)
then remove the FSTC parameter and reboot with the previous QEMM
line.
In either case, run Manifest (by typing MFT at the DOS prompt)
and look at the QEMM/Analysis screen. The Cn00 line should look
something like this:
Cn00 OIII IIII OOOO OOOO
This indicates that the first 4K region of the C000 range (in the
video ROM) is being accessed directly. This portion of the
address space must be EXCLUDED from QEMM's use when Stealth ROM
is enabled. The appropriate QEMM line in the CONFIG.SYS would
be:
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=C000-C0FF
SECTION THREE
STEP NINE:
On some machines there are other ROMs that can be Stealthed;
often these are disk ROMs. The same procedure would be used for
troubleshooting a disk-related problem. That is, add XST=??00
(using the beginning address of that particular ROM.) If this
solves the problem, replace the XST=??00 with the appropriate
EXCLUDE (X=??00-!!FF, replacing ??00 and !!00 with the beginning
and ending addresses of the ROM) to determine whether the problem
is related to Stealthing or to the fact that some portion of the
ROM's address space needs to be directly accessible. The trick
of making the Page Frame begin at the beginning of the disk ROM
may also work here as well.
If XST=??00 solves your problem, try replacing it with FR=??00
(as long as there is a 64K portion of the address space free
beginning at ??00 and that ?? is a multiple of 16.) If some
portion of the address space must be EXCLUDED for Stealth ROM to
work you should check Analysis with the FSTC and X=??00-!!FF
parameters on the QEMM line.
Because of the way the ROMs are written for the IBM PS/2 machines
and, perhaps, other Micro Channel machines, it is necessary to
load HOOKROM.SYS before QEMM386.SYS in the CONFIG.SYS for
XST=E000 to work. For example:
DEVICE=C:\QEMM\HOOKROM.SYS
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M XST=E000
STEP TEN:
Use XST=F000, XST=C000, and XST=??00 simultaneously for all ROMs
being Stealthed. Then replace the XSTs one by one with the
appropriate regular Exclude (X=F000-FFFF, X=C000-C7FF, X=??00-
!!FF...) and look at the QEMM/ Analysis screen of Manifest to see
what portions of the address space need to be directly available.
STEP ELEVEN:
If ST:M with XST on all Stealthed ROMs fails, add the following
parameters to the QEMM line we used in STEP TEN:
FB:N UFP:N VHI:N F10:N
If this works, remove the XSTs one at a time to determine which
one(s) you actually need. If an XST alone does not solve the
problem, turn back to SECTION ONE for help in determining the
appropriate XST or EXCLUDE while keeping the above parameters.
The parameters are explained further in the longer, unabridged
version of this technote as well as in your QEMM manual.
STEP TWELVE:
If ST:M does not work, try ST:F instead. If ST:F does not work,
try ST:F XST=C000 (and XST=??00) for Stealthed ROMs other than
the one(s) overlain by the Page Frame.
STEP THIRTEEN:
If none of these steps solves the problem, Quarterdeck's Testing
and Compatibility Department want to know what program or device
is failing (and at what point.) Please contact our Technical
Support staff so that our technicians can get all the necessary
information about your problem.
ADDITIONAL INFORMATION ABOUT STEALTH ROM AND RELATED ISSUES:
1) WHAT ARE ADVANCED DISK FEATURES AND VHI:N?
The BIOS has a set of function calls intended for use by
multitasking programs. These are Int 15, functions 90 and 91.
The system ROM or disk ROM may issue the Int 15, fn 90 call while
it is waiting for the disk controller to read or write a sector,
allowing other programs to execute during this wait. When the
sector is ready, the disk interrupt handler issues an Int 15, Fn
91, signaling the multitasking program that the disk information
is ready to be processed by the system or disk ROM.
Some disk caches hook this call to allow your system to go ahead
and execute your current program while the system or disk ROM is
waiting for its requested sector. Whereas these caches preserve
the stack and register state for the BIOS and the application
when doing this pseudo-multitasking, they do not preserve the
mapping of the page frame. Therefore, if the BIOS uses the Page
Frame itself (as does Stealth ROM), this could generate conflicts
and system failures. Since no known disk cache does the proper
Page Frame preservation, QEMM automatically suppresses INT 15,
function 90 calls from the BIOS, effectively disabling advanced
disk features. Caches that save and restore the Page Frame when
using advanced disk features can use a programming interface to
QEMM to re-enable advanced disk features.
You may defeat QEMM's defeating of this feature with the
VIRTUALHDIRQ:N (VHI:N) parameter on the QEMM device line in your
CONFIG.SYS file. If your cache has these "Advanced Features" and
does not save and restore the Page Frame you will crash or
corrupt data on the cached drive(s).
2) CAN I LOAD A DRIVER THAT USES ROM BEFORE QEMM?
You can load a device driver that uses a ROM before QEMM and
still Stealth that ROM by loading the driver HOOKROM.SYS before
you load this driver. HOOKROM is installed in your QEMM
directory. Here is an example of a CONFIG.SYS file that loads
HOOKROM, then a driver that uses a ROM, then QEMM with Stealth
ROM enabled:
DEVICE=C:\QEMM\HOOKROM.SYS
DEVICE=C:\????????.SYS
DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M
3) WHY DOES XST=E000 ONLY WORK ON PS/2 MACHINES IF I USE
HOOKROM.SYS?
The code in the E000-EFFF portion of the ROM on PS/2 (and perhaps
other Micro Channel machines) is not directly pointed to by the
interrupt table. The interrupt table points to addresses in
F000-FFFF, which then point to the appropriate code in the E000-
EFFF segment. You can see this in the FirstMeg/ Interrupts
section of Manifest. When you load HOOKROM.SYS, it traces down
the redirection of the interrupts to the place where the
executing code begins, so that interrupts that are serviced by
code in the E000-EFFF segment actually point to addresses in the
E000-EFFF segment. The use of HOOKROM.SYS is discussed in STEP
NINE of the troubleshooting section of this technote.
4) WHY DOES MY COMPUTER'S SETUP PROGRAM NOT COME UP WHEN ST:M
IS ENABLED?
Some machines have a built-in System Setup program in the BIOS
ROM that can be popped up at any time. Using Stealth ROM might
make this feature inaccessible to you after your system has
booted. Because the Setup program accesses the ROM directly, you
must EXCLUDE the portion of address space where it is stored in
order for it to work after QEMM has been loaded and Stealth ROM
enabled. On most machines this Setup program is found in F000-
F7FF.
You may decide that you would rather have access to the Setup
program ONLY on bootup and use this portion of the address space
for High RAM. Since you must reboot your computer after making
changes in your CMOS Setup anyway, most users consider this a
fair trade.
SUMMARY:
The Stealth ROM technology has been exhaustively tested; however,
due to the wide variety of software and hardware in the PC world,
it cannot be guaranteed to work with every configuration. The
actual Stealthing of interrupts is very successful. The most
common failures are due to programs (or other ROMs) trying to
access a portion of the ROM directly, rather than by means of
interrupt.
If you are interested in a longer, highly technical explanation
of Stealth ROM, read the unabridged version of this technical
bulletin, available through our standard support channels. See
CONTACT.TEC in your QEMM\TECHNOTE directory for information on
obtaining technotes.
If you experience a problem that you are unable to resolve using
the steps outlined in this technical bulletin, Quarterdeck would
very much like to hear about it.
****************************************************************
This technical note may be copied and distributed freely as long
as it is distributed in its entirety and it is not distributed
for profit. Copyright (C) 1991-3 by Quarterdeck Office Systems
******************* E N D O F F I L E **********************